package com.mongo.operation.util;

import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;

import java.io.*;

/**
 * @author : jingling
 * @Date : 2018/10/9
 */
@Slf4j
public class ObjectUtil {
    /**
     * 校验对象数据大小
     * @param target 目标对象
     * @param size 比对大小
     * @return 目标对象大小 < 比对大小 返回true,其他返回false;
     */
    public static boolean compareObjectSize(Object target,int size){
        try{
            String dataStr = JSON.toJSONString(target);
            int dataLength= dataStr.getBytes("UTF-8").length;
            log.info("校验对象数据大小dataLength:{}",dataLength);
            if(dataLength < size){
                return true;
            }
        }catch(Exception e){
            log.error("校验对象数据大小异常e:{}",e);
        }
        return false;
    }

    /**
     * 将对象转换成 InputStream
     * @param object
     * @return
     */
    public static InputStream objectToInputStream(Object object){
        try{
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeObject(object);
            oos.flush();
            oos.close();
            InputStream is = new ByteArrayInputStream(baos.toByteArray());
            return  is;
        }catch(Exception e){
            log.error("对象转inputStream 异常e:{}",e);
        }
        return null;
    }

    /**
     * 将InputStream 转换成 Object
     * @param is
     * @return
     */
    public static Object inputStreamToObject(InputStream is){
        try{
            ObjectInputStream ois = new ObjectInputStream(is);
            Object object = ois.readObject();
            return object;
        }catch(Exception e){
            log.error("对象转inputStream 异常e:{}",e);
        }
        return null;
    }
}
